package com.guchenbo.spark.core

import org.apache.spark.{SparkConf, SparkContext}

object GcbRDDDemo {
  def main(args: Array[String]): Unit = {
    val conf = new SparkConf().setAppName("GcbRDDDemo").setMaster("local")
    conf.set("spark.default.parallelism", "4")
    val sc = new SparkContext(conf)
    var rdd = GcbRDD.rdd(sc, 4)
    var rdd2 = rdd.map(f => s"$f-end")


    println(rdd.getNumPartitions)
    println(rdd2.getNumPartitions)
    //    rdd.foreach()
    //    rdd2.foreachPartition()
    println(rdd2)
//    rdd2.coalesce(4, false).collect()
//      .foreach(f => {
//        println(f)
//      })
    //
//    rdd2.coalesce(4,false).foreach(s=>{
//      println("in")
//    })
    var rdd3 = rdd2.map(s => (s, 1))
    var rdd4 = rdd3.reduceByKey((a, b) => a + b, 3)
//    rdd4.foreachPartition(p=>{
//
//    })
//    println(rdd4)
    //    rdd4.collect()
    //
        rdd4.foreachPartition(iter => {
              println("in part")
              iter.foreach(println(_))
            })

    //    println(rdd3.getNumPartitions)
    //    println(rdd4.getNumPartitions)
    //
    //    sc.makeRDD(List(1,2))
  }
}
